Various communication networks use a flow control mechanism to allow a receiver node to control the traffic sending rate of a sender node. Different flow control methods are known in the art. For example, flow control in InfiniBand (IB) communication networks is specified in chapter 7.9 of the IB specifications, titled “InfiniBand™ Architecture Specification,” Volume 1, Release 1.2.1, November, 2007, which is incorporated herein by reference.
For example, U.S. Pat. No. 6,347,337, whose disclosure is incorporated herein by reference, describes a credit-based flow control scheme that is designed to operate over Virtual Interface (VI) Architecture. The credit-based flow control scheme reduces overhead (e.g., reduces buffer copies and kernel processing) by relying upon the reliability properties of the underlying VI Architecture. If the number of send credits is sufficient, the sender prepares and sends the packet. Otherwise, the sender sends a Credit Request and waits for a Credit Response. Upon receiving the corresponding Credit Response, the sender continues sending data packets. In response to a sender's Credit Request, the receiver sends the Credit Response only when it has enough receive credits.
As another example, U.S. Pat. No. 7,190,667, whose disclosure is incorporated herein by reference, describes some embodiments that include a data network comprising a host system having a host-fabric adapter, at least one remote system, a switch fabric which interconnects the host system via the host-fabric adapter to the remote system along different physical links for data communications, and at least one communication port provided in the host-fabric adapter of the host system. The communication port includes a set of transmit and receive buffers capable of sending and receiving data packets concurrently via respective transmitter and receiver at the end of a physical link, via the switched fabric. The communication port additionally comprises a flow control mechanism utilized to prevent loss of data due to receive buffer overflow at the end of the physical link.
U.S. Patent Application Publication 2006/0092842, whose disclosure is incorporated herein by reference, describes a module, and a system for calculating a credit limit for an interface of a second device, that is capable of receiving multiple packets simultaneously from a first device. Generally, the multiple packets are simultaneously received at an interface on the second device, each packet being one of a plurality of packet types, and a flow control credit limit to be transmitted to the first device is adjusted based on the combination of packet types of the simultaneously received packets.